Robots are designed in a variety of different ways depending upon the particular tasks that the robot is to perform. Many robots include a base unit which may be fixed or movable, and one or more arms attached to the base where each arm may include one or more arm links. The arm links are typically coupled together by joints creating a robot arm somewhat analogous to a human arm. For example, a robot may include a base, a first link connected to the base by a first joint, a second link connected to the first link with a second joint, a third link connected to the second link with a third joint, and so on, and typically a mechanism or tool attached to the end of the arm designed for the particular application, such as for picking up and moving objects or for holding tools.
Most robots include a plurality of mechanical links, bearings, gears, motors, amplifiers and sensors, which are all typically controlled by a robot controller using motion control algorithms. The static accuracy and dynamic performance of robotics systems is typically affected by many factors, such as the mass and stiffness of the mechanical links, radial-play and end-play of the bearings, backlash of the gears, torque of the motors, the dynamic response of amplifiers and sensors, and the speed and accuracy of motion control algorithms. The actual performance of any given robot will be influenced by the above factors and also by the application of dependent factors such as the load, velocity, and the particular path followed.
Generally, the control of a system requires knowledge of the state of the robot system. In mechanical systems such as robots, the state of the system includes a knowledge of the relative location of each of the components of the system as well as the relative velocities and accelerations of each component. In typical commercial robots of prior art, the joint angles and their derivatives were the only parameters measured and calculated since these parameters roughly define the instantaneous position and relative velocities and accelerations of each link. These methods of prior art were sufficient when the robot was performing simple tasks in a well defined and unsophisticated environment.
It is desirable to design robots having greater capabilities to perform more sophisticated tasks at greater speeds. To achieve the desired increases in sophistication and speed, the state of the robot must be measured more accurately. Furthermore, the amount of backlash, end-play, and axial-play that exists in joint drives and bearings must be determined and considered to achieve more precise control. Also, as the robot work environment becomes more complex, more precise knowledge and control of the state of the robot is required in order to avoid disastrous collisions.
The knowledge of the joint angles and their derivatives does not define the state of the robot accurately enough for more sophisticated applications since many factors are ignored. For example, the robot arm links may be constructed from materials which flex under various load and acceleration forces, and the amount of deformation due to flexure must be considered. For example, when forces are applied, each arm link may be deformed so that one end of the arm link may be displaced in X and Y directions in the plane normal to the axis of the link, may roll a few degrees about the axis, or may experience pitch and yaw movements relative to the other end of the robot arm link. If these deformations are not measured and considered by the control algorithm, the state of the robot will not be accurately determined. In addition, measurement of link deflections can be used to calculate actual load for use in determining the optimum controller gain.
It is, therefore, desirable to provide a technique to more accurately determine the state of each link of each robot arm, so that when combined with the knowledge of the joint angles and their derivatives, a way is provided to more accurately determine the state of the robot and to achieve the desired level of control.